#include <string>
#include <list>
#include "LongTermStand.h"
#include "GateStand.h"
#include "Employee.h"
#include "Time.h"

#ifndef GROUNDTRAFFICCONTROLLER
#define GROUNDTRAFFICCONTROLLER

class GroundTrafficController : public Employee
{
	protected: 
		std::list<LongTermStand> *longTermStandList;
		std::list<GateStand> *gateStandList;
		std::list<Flight> *unassignedFlightList;

	public:
		GroundTrafficController(void);
		GroundTrafficController(std::string, std::string);
		~GroundTrafficController(void);
		int allocateGateStandIncoming(GateStand*, Flight*);  //allocate to an aircraft with non-null something or otherI kind of forget
		int allocateGateStandOutgoing(GateStand*, Flight*);
		
		int reallocateStand(GateStand*, Aircraft*);
		int reallocateStand(LongTermStand*, Aircraft*);
		
		int createIncomingFlight(std::string, int, Time&, Time&, std::string);
		int createOutgoingFlight(std::string, int, Time&, Time&, std::string);
		std::list<GateStand>* getGateStandList ();
		std::list<LongTermStand>* getLongTermStandList ();
		void reportDelay(Flight*, Time*);
		
		int changePassword (std::string, std::string);
};

#endif
